/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package be.hogent.iii.project.client.gui.gameroom;

import be.hogent.iii.project.common.game.objecten.Resultaat;
import be.hogent.iii.project.common.game.objecten.Speler;
import be.hogent.iii.project.common.game.objecten.Wedstrijd;
import java.awt.Dimension;
import java.util.ArrayList;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;

/**
 *
 * @author jef donders
 */
public class InfoPlayerPanel extends JPanel {

    private Dimension size;
    private JTable table;
    private ArrayList<Wedstrijd> wedstrijden;
    private Speler speler;
    private JScrollPane wedstrijdDetail;
    private JScrollPane wedstrijdenScrollPane;
    private GameRoomGui gui;
    private JLabel labelNaam;
    private JLabel labelWins;
    private JLabel labelLosses;
    private JLabel labelOverzicht;
    private Dimension wedstrijdenScrollPaneGrootte;

    public InfoPlayerPanel(GameRoomGui gui, Dimension size) {
        this.gui = gui;
        this.size = size;

        setBackground(new java.awt.Color(0, 0, 0));
        setForeground(new java.awt.Color(255, 255, 255));
        
        wedstrijdDetail = new JScrollPane();
        wedstrijdDetail.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        wedstrijdDetail.getViewport().setBackground(new java.awt.Color(0, 0, 0));
        
        wedstrijdenScrollPane = new JScrollPane();
        wedstrijdenScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        wedstrijdenScrollPane.getViewport().setBackground(new java.awt.Color(0, 0, 0));
                
        labelNaam = new JLabel("naam: ");
        labelNaam.setBackground(new java.awt.Color(102, 0, 0));
        labelNaam.setFont(new java.awt.Font("Tahoma", 1, 11));
        labelNaam.setForeground(new java.awt.Color(204, 153, 0));
        
        labelWins = new JLabel("aantal wins: ");
        labelWins.setBackground(new java.awt.Color(102, 0, 0));
        labelWins.setFont(new java.awt.Font("Tahoma", 1, 11));
        labelWins.setForeground(new java.awt.Color(204, 153, 0));
        
        labelLosses = new JLabel("aantal losses: ");
        labelLosses.setBackground(new java.awt.Color(102, 0, 0));
        labelLosses.setFont(new java.awt.Font("Tahoma", 1, 11));
        labelLosses.setForeground(new java.awt.Color(204, 153, 0));
        
        labelOverzicht = new JLabel("Overzicht Wedstrijden:");
        labelOverzicht.setBackground(new java.awt.Color(102, 0, 0));
        labelOverzicht.setFont(new java.awt.Font("Tahoma", 1, 11));
        labelOverzicht.setForeground(new java.awt.Color(204, 153, 0));
        
        Dimension labelNaamGrootte = new Dimension(size.width / 3 - 15, size.height / 12 - 15);
        Dimension labelWinsGrootte = new Dimension(size.width / 3 - 15, size.height / 12 - 15);
        Dimension labelLossesGrootte = new Dimension(size.width / 3 - 15, size.height / 12 - 15);
        Dimension labelOverzichtGrootte = new Dimension(size.width / 3 - 15, size.height / 12 - 15);
        wedstrijdenScrollPaneGrootte = new Dimension(size.width, 2 * size.height / 3 - 25);

        
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                        .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(labelNaam, labelNaamGrootte.width, labelNaamGrootte.width, labelNaamGrootte.width)
                                .addComponent(labelWins, labelWinsGrootte.width, labelWinsGrootte.width, labelWinsGrootte.width)
                                .addComponent(labelLosses, labelLossesGrootte.width, labelLossesGrootte.width, labelLossesGrootte.width)
                                .addComponent(labelOverzicht, labelOverzichtGrootte.width, labelOverzichtGrootte.width, labelOverzichtGrootte.width))
                            .addGap(40, 40, 40)
                            .addComponent(wedstrijdDetail, javax.swing.GroupLayout.PREFERRED_SIZE, 242, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addComponent(wedstrijdenScrollPane, 0,wedstrijdenScrollPaneGrootte.width, Short.MAX_VALUE));
        layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(wedstrijdDetail, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGroup(layout.createSequentialGroup()
                            .addComponent(labelNaam, labelNaamGrootte.height, labelNaamGrootte.height, labelNaamGrootte.height)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(labelWins, labelWinsGrootte.height, labelWinsGrootte.height, labelWinsGrootte.height)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(labelLosses, labelLossesGrootte.height, labelLossesGrootte.height, labelLossesGrootte.height)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(labelOverzicht, labelOverzichtGrootte.height, labelOverzichtGrootte.height, labelOverzichtGrootte.height)))
                    .addGap(18, 18, 18)
                    .addComponent(wedstrijdenScrollPane, wedstrijdenScrollPaneGrootte.height, wedstrijdenScrollPaneGrootte.height, wedstrijdenScrollPaneGrootte.height)));

    }

    public void setInhoudSpeler(Speler speler, ArrayList<Wedstrijd> wedstrijden) {

        this.wedstrijden = wedstrijden;
        this.speler = speler;

        wedstrijdenScrollPane.setViewportView(maakWedstrijdenTable(wedstrijdenScrollPaneGrootte, wedstrijden));
        
        labelNaam.setText  ("naam:                " + speler.getNick());
        labelWins.setText  ("aantal wins:      " + speler.getWincount());
        labelLosses.setText("aantal losses:   " + speler.getLosscount());
        labelOverzicht.setText("Overzicht Wedstrijden:");
        
    }

    private JTable maakWedstrijdenTable(Dimension grootte, ArrayList<Wedstrijd> wedstrijden) {
        table = new JTable(new WedstrijdOverzichtTableModel(wedstrijden));
        ListSelectionModel listSelectionModel = table.getSelectionModel();
        listSelectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        listSelectionModel.addListSelectionListener(new WedstrijdOverzichtSelectedListener(this));
        table.setSelectionModel(listSelectionModel);

        table.setBackground(new java.awt.Color(102, 0, 0));
        table.setFont(new java.awt.Font("Tahoma", 1, 11));
        table.setForeground(new java.awt.Color(204, 153, 0));
                
        return table;
    }

    public void vraagWedstrijdDetail() {
        System.out.println("totale grootte: " + wedstrijden.size() + "\nnummer van rij: " + table.getSelectedRow());
        int battleId = wedstrijden.get(table.getSelectedRow()).getBattleId();
        System.out.println("resultaat van match met bid: " + battleId);
        gui.vraagWedstrijdResultaat(battleId);
    }

    public void setWedstrijdDetail(Resultaat resultaat) {
        String[] hoofding = {"winnaars", "verliezers"};

        int aantal = resultaat.getVerliezers().size();
        if (resultaat.getWinnaars().size() > aantal) {
            aantal = resultaat.getWinnaars().size();
        }
        String[][] data = new String[aantal][2];
        for (int i = 0; i < aantal; i++) {
            if (i < resultaat.getWinnaars().size()) {
                data[i][0] = resultaat.getWinnaars().get(i);
            } else {
                data[i][0] = "";
            }

            if (i < resultaat.getVerliezers().size()) {
                data[i][1] = resultaat.getVerliezers().get(i);
            } else {
                data[i][1] = "";
            }
        }

        JTable tableWedstrijdResultaat = new JTable(data, hoofding);
        tableWedstrijdResultaat.setBackground(new java.awt.Color(102, 0, 0));
        tableWedstrijdResultaat.setFont(new java.awt.Font("Tahoma", 1, 11));
        tableWedstrijdResultaat.setForeground(new java.awt.Color(204, 153, 0));
        
        wedstrijdDetail.setViewportView(tableWedstrijdResultaat);
    }
}
